﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Web.Framework;
using Ubatic.Contracts.Contracts;
using Ubatic.Contracts.Services;
using Ubatic.ServiceFactory;

namespace Ubatic.UI.Account
{
    public partial class RegenerarContrasena : BasePage
    {
        private IUserService UserService = Factory.GetUserService();

        public long UserId
        {
            get
            {
                return Convert.ToInt64(ViewState["UserId"]);
            }
            set
            {
                ViewState["UserId"] = value;
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!this.IsPostBack)
                {
                    pnlConsultaUser.Visible = true;
                }
            }
            catch (Exception ex)
            {
                ExceptionManager.Instance.HandleException(ex);
            }
        }

        protected void btnObtenerUsuario_Click(object sender, EventArgs e)
        {
            try
            {
                CriteriaUsuarioDto search = new CriteriaUsuarioDto();
                search.Cuil = Convert.ToInt64(this.txtCuitA.Text + this.txtCuitB.Text + this.txtCuitC.Text);
                var usuarioList = UserService.ObtenerUsuarios(search);
                if (usuarioList.Count == 1)
                {
                    var usuario = usuarioList.First();
                    UserId = usuario.Id;
                    pnlUser.Visible = true;
                    pnlConsultaUser.Visible = false;
                    lblUsuarioCuit.Text = string.Format("{0} {1}", usuario.Nombre, usuario.Apellido);
                }
                else
                {
                    this.masterPage.ShowMessage("El usuario no fue encontrado con ese CUIL", WebMessageType.Notification);
                }
            }
            catch (Exception ex)
            {
                pnlConsultaUser.Visible = true;
                ExceptionManager.Instance.HandleException(ex);
            }
        }

        protected void btnRegenerar_Click(object sender, EventArgs e)
        {
            try
            {
                UserService.EnviarContraseniaProvisoria(UserId);
                this.masterPage.ShowMessage("Se le ha enviado una clave provisoria que deberá cambiar al ingresar", WebMessageType.Notification);                
            }
            catch (Exception ex)
            {
                ExceptionManager.Instance.HandleException(ex);
            }
        }
    }
}